Links verwenden
Zu jedem Schritt im Wizard wird ein “Text im Dialog” verwendet, in dem der jeweilige Schritt kurz beschrieben wird. Hier ist es möglich, Hyperlinks zu verwenden, mit denen der Benutzer in andere Transaktionen abspringen kann.
Beispiel
Die Verwendung eines Links in einem Dialogtext könnte z.B. so aussehen:
Text
Der Text sieht folgendermassen aus:
U1 Fahrzeugdaten erfassen
AS In diesem Schritt werden die Kennungsdaten für das Fahrzeug erfasst.
Bitte geben Sie alle erforderlichen Daten ein. Nur wenn die Eingaben
vollständig sind, können Sie mit dem nächsten Schritt weiter machen.
AS Bitte klicken Sie <DS:TRAS.ZZ01>hier</>, um eine Übersicht über den
aktuellen Bearbeitungsstatus zu sehen.
Der Link muss mit “<DS:” beginnen, damit sie korrekt als Link angezeigt wird. Sie können im Text über das Menü Einbinden – Verweis Standard-Links einbinden. Diese müssen dann zwar auch in der Implementierung berücksichtigt werden, aber sie werden korrekt als Link erkannt.
Sie können auch eigene Links einbauen, die werden jedoch mit einer Fehlermeldung angemeckert. Diese Meldung kann allerdings ignoriert werden.
Implementierung
Damit der Link auch abgearbeitet wird, müssen Sie in die Programmlogik des Wizards eingreifen.
Zu jedem Verarbeitungsschritt wird eine Routine CB_PROCESS_STEP_nnnn ausgeführt (nnnn ist die Nummer des jeweiligen Dynpros). In dieser Routine wird der Funktionsbaustein SWF_WIZARD_CALL aufgerufen. Es werden verschiedene Parameter übergeben, die den aktuellen Schritt steuern.
In der Übergabestruktur müssen das Programm und die Routine übergeben werden, die die Behandlung des Links durchführen soll:
l_wizard-htmlform = ‘ZZ_HANDLE_LINK’.
l_wizard-htmlpool = sy-repid.
Die Routine selbst hat einen Übergabeparameter:
FORM zz_handle_link USING value(action).
CASE action.
WHEN ‘DS:TRAS.ZZ01’.
…
ENDCASE.
ENDFORM.
Standard-Links verarbeiten
Um die Links korrekt verarbeiten zu können die über das Menü Einbinden – Verweise eingefügt werden können, kann das folgende Coding verwendet werden:
DATA: dokclass LIKE dsysh-dokclass, “DSYS-Klasse
dokname LIKE dokil-object,
outline LIKE tdsgl-outline,
hometext LIKE dsygh-doktitle,
wort TYPE tline,
subrc TYPE sysubrc,
pf15(1) TYPE c VALUE ‘ ‘.
wort = action+10.
CASE wort(2).
WHEN ‘DS’. “DSYS-Link
REPLACE ALL OCCURRENCES OF ‘:’ IN wort WITH ”.
PERFORM link_string_interpret(sapfsds1)
USING wort
CHANGING dokclass
dokname
outline
subrc.
IF subrc NE 0.
EXIT.
ENDIF.
hometext = ‘Link’.
IF dokclass NE ‘ABAP’ AND
dokclass NE ‘ABEN’ AND
dokclass NE ‘DYNP’.
CALL FUNCTION ‘DSYS_SHOW’
EXPORTING
dokclass = dokclass
doklangu = sy-langu
dokname = dokname
hometext = hometext
outline = outline
IMPORTING
pf15 = pf15
EXCEPTIONS
object_not_found = 01
class_unknown = 02.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
CALL FUNCTION ‘ABAP_DOCU_SHOW’
EXPORTING
area = dokclass
name = dokname
langu = sy-langu.
ENDIF.
ENDCASE.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024